package com.xxxx.funs

import java.util.Date

/**
 * @program: test01
 * @description: ${description}
 * @author: CoreDao
 * @create: 2021-03-02 17:52
 **/

object funs2 {
  def main(args: Array[String]): Unit = {

    /**
     * 嵌套函数
     * 注意嵌套函数何时调用!!!
     * 其实之前写的都是嵌套函数，嵌套在主函数中
     */
    def f6(a:Int,b:Int)={
      def f7(c:Int)={
        a*b*c
      }
      f7(10)
    }
    f6(2,3)

    /**
     * 偏应用函数
     * 是一种表达式
     * 有具体的应用场景，要求看懂
     * 绑定不变的，
     *
     */
    def log(date :Date, s :String)= {
      println("date is "+ date +",log is "+ s)
    }

    val date = new Date()
    log(date ,"log1")
    log(date ,"log2")
    log(date ,"log3")

    //想要调用log，以上变化的是第二个参数，可以用偏应用函数处理
    //“_”可以理解为占位符，可以用来替换缺失的参数列表
    val logWithDate: String => Unit = log(date,_:String)
    logWithDate("log11")
    logWithDate("log22")
    logWithDate("log33")


  }





}
